package com.ruoyi.business.service.impl;

import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.business.domain.EnvMonitorData;
import com.ruoyi.business.mapper.EnvMonitorDataMapper;
import com.ruoyi.business.service.IEnvMonitorDataService;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Random;

/**
 * 环保监控数据Service业务层处理
 * 
 * @author qiancheng
 * @date 2025-06-13
 */
@Service
public class EnvMonitorDataServiceImpl extends ServiceImpl<EnvMonitorDataMapper, EnvMonitorData> implements IEnvMonitorDataService
{
    @Autowired
    private EnvMonitorDataMapper envMonitorDataMapper;

    /**
     * 查询环保监控数据
     * 
     * @param id 环保监控数据主键
     * @return 环保监控数据
     */
    @Override
    public EnvMonitorData selectEnvMonitorDataById(Long id)
    {
        return envMonitorDataMapper.selectEnvMonitorDataById(id);
    }

    /**
     * 查询环保监控数据列表
     * 
     * @param envMonitorData 环保监控数据
     * @return 环保监控数据
     */
    @Override
    public List<EnvMonitorData> selectEnvMonitorDataList(EnvMonitorData envMonitorData)
    {
        List<EnvMonitorData> envMonitorDataList = envMonitorDataMapper.selectEnvMonitorDataList(envMonitorData);
        // 遍历设置随机排放量（不高于国际标准）
        Random random = new Random();
        for (EnvMonitorData data : envMonitorDataList) {
            if (data.getStandard() != null) {
                BigDecimal standard = data.getStandard();
                int max = standard.intValue(); // 转成 int 作为上限
                int emissionValue = random.nextInt(max + 1); // 0 ~ max 之间的整数
                data.setEmission(BigDecimal.valueOf(emissionValue));
            }
        }

        return envMonitorDataList;
    }

    /**
     * 新增环保监控数据
     * 
     * @param envMonitorData 环保监控数据
     * @return 结果
     */
    @Override
    public int insertEnvMonitorData(EnvMonitorData envMonitorData)
    {

        Date now = DateUtils.getNowDate();
        envMonitorData.setCreateTime(now);

        Calendar cal = Calendar.getInstance();
        cal.setTime(now);
        envMonitorData.setBelongYear( cal.get(Calendar.YEAR));
        envMonitorData.setBelongMonth((cal.get(Calendar.MONTH) + 1));

        // 手动生成主键
        envMonitorData.setId(IdWorker.getId());
        return envMonitorDataMapper.insert(envMonitorData);
    }

    /**
     * 修改环保监控数据
     * 
     * @param envMonitorData 环保监控数据
     * @return 结果
     */
    @Override
    public int updateEnvMonitorData(EnvMonitorData envMonitorData)
    {
        envMonitorData.setUpdateTime(DateUtils.getNowDate());
        return envMonitorDataMapper.updateEnvMonitorData(envMonitorData);
    }

    /**
     * 批量删除环保监控数据
     * 
     * @param ids 需要删除的环保监控数据主键
     * @return 结果
     */
    @Override
    public int deleteEnvMonitorDataByIds(Long[] ids)
    {
        return envMonitorDataMapper.deleteEnvMonitorDataByIds(ids);
    }

    /**
     * 删除环保监控数据信息
     * 
     * @param id 环保监控数据主键
     * @return 结果
     */
    @Override
    public int deleteEnvMonitorDataById(Long id)
    {
        return envMonitorDataMapper.deleteEnvMonitorDataById(id);
    }
}
